// ChatMessageService.java
package com.ruoyi.chatAi.service;

import com.ruoyi.chatAi.domain.ChatMessage;
import java.util.List;

/**
 * 聊天消息服务接口
 *
 * @author ruoyi
 */
public interface ChatMessageService {
    /**
     * 查询聊天消息
     */
    ChatMessage selectChatMessageById(Long messageId);

    /**
     * 查询聊天消息列表
     */
    List<ChatMessage> selectChatMessageList(ChatMessage chatMessage);

    /**
     * 查询会话的聊天消息列表
     */
    List<ChatMessage> selectChatMessagesBySessionId(String sessionId);

    /**
     * 新增聊天消息
     */
    int insertChatMessage(ChatMessage chatMessage);

    /**
     * 修改聊天消息
     */
    int updateChatMessage(ChatMessage chatMessage);

    /**
     * 批量删除聊天消息
     */
    int deleteChatMessageByIds(Long[] messageIds);

    /**
     * 删除聊天消息信息
     */
    int deleteChatMessageById(Long messageId);

    /**
     * 根据会话ID删除聊天消息
     */
    int deleteChatMessagesBySessionId(String sessionId);

    /**
     * 保存用户消息和AI回复
     */
    boolean saveConversation(String sessionId, Long userId, String userMessage, String aiReply);

    /**
     * 获取会话的上下文消息
     */
    List<ChatMessage> getConversationContext(String sessionId, int maxContextSize);

    /**
     * 统计用户的消息数量
     */
    int countUserMessages(Long userId);

    /**
     * 估算文本的token数量
     */
    int estimateTokens(String text);
}